package br.seplan.daos;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import br.seplan.dao.conection.ConnectionFactory;
import br.seplan.entidades.TipoUsuario;
import br.seplan.entidades.Usuario;


public class UsuarioDAO {
	private final String SQL_INSERT = "INSERT INTO USUARIO (nome, telefone_contato, email, lotacao, senha, tipo, matricula) VALUES (?,?,?,?,?,?,?);";
	
	private final String SQL_SELECT_ALL = "SELECT * FROM USUARIO;";
	
	
	public void cadastrar(Usuario usuario){
		Connection conexaoComOBanco = ConnectionFactory.conectar();
		try {
			PreparedStatement ps = conexaoComOBanco.prepareStatement(SQL_INSERT);

			ps.setString(1, usuario.getNome());
			ps.setString(2, usuario.getTelefone_contato());
			ps.setString(3, usuario.getEmail());
			ps.setString(4, usuario.getLotacao());
			ps.setString(5, usuario.getSenha());
			ps.setInt(6, usuario.getTipoUsuario().ordinal());
			ps.setString(7, usuario.getMatricula());			
			ps.execute();
			ConnectionFactory.desconectar(conexaoComOBanco);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public ArrayList<Usuario> findAll(){
		Connection conexaoComOBanco = ConnectionFactory.conectar();
		ArrayList<Usuario> listaUsuarios = new ArrayList<Usuario>();
		try {
			PreparedStatement ps = conexaoComOBanco.prepareStatement(SQL_SELECT_ALL);
			ResultSet linhas = ps.executeQuery();
			while (linhas.next()) {
				Usuario user = new Usuario(linhas.getInt("idUsuario"), linhas.getString("nome"), linhas.getString("telefone_contato"),
						linhas.getString("matricula"),linhas.getString("email"),linhas.getString("lotacao"),
						linhas.getString("senha"),TipoUsuario.findTipoByOrdinal(linhas.getInt("tipo")));
			
				listaUsuarios.add(user);
			}
			ConnectionFactory.desconectar(conexaoComOBanco);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return listaUsuarios;
		
	}
}
